/*
     关于Object类中的equals方法
        1、源代码:
            public boolean equals(Object obj){
                return (this == obj);
            }
            这里用的==，但是不够用，故需要重写equals方法
        2、equals方法是判断两个对象是否相等
        3、不能用双等号，比较的是两个对象的内存地址

     关于String类中的equals和toString方法
        1、String类已经重写了equals方法，比较两个字符串不能使用==，必须使用equals
        2、String类已经重写了toString方法

     基本数据类型判断相等用==      引用数据类型使用equals方法

     重写equals要彻底，子类的引用类也要重写equals
 */

import java.util.Objects;
public class EqualsTest{
    public static void main(String[] args) {
        Equals e1 = new Equals(1999,6,10);
        Equals e2 = new Equals(1998,9,28);
        System.out.println(e1.equals(e2));
    }
}

class  Equals {
    private int year;
    private int mouth;
    private int day;

    public boolean equals(Object o) {               //equals方法重写，判断对象里的内容是否相等
        if (this == o) return true;
        if (!(o instanceof Equals)) return false;
        Equals equals = (Equals) o;
        return year == equals.year &&
                mouth == equals.mouth &&
                day == equals.day;
    }

    public Equals() {
    }

    public Equals(int year, int mouth, int day) {
        this.year = year;
        this.mouth = mouth;
        this.day = day;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public int getMouth() {
        return mouth;
    }

    public void setMouth(int mouth) {
        this.mouth = mouth;
    }

    public int getDay() {
        return day;
    }

    public void setDay(int day) {
        this.day = day;
    }
}
